Computers have become highly integrated in the workforce, in the home, in mobile devices, and many other places. Computers can process massive amounts of information quickly and efficiently. Software applications designed to run on computer systems allow users to perform a wide variety of functions including business applications, schoolwork, entertainment and more. Software applications are often designed to perform specific tasks, such as word processor applications for drafting documents, or email programs for sending, receiving and organizing email.
A database service may run in a cluster environment and may be distributed over multiple different computer systems. A database service is often relied on by users and software programs alike to be available twenty-four hours a day, seven days a week. Accordingly, database managers often implement various measures to ensure that the database service is always (or nearly always) up and running. Each database hosted in a database service has multiple replicas on different nodes so that when failures occur on one node, a backup node is available to take its place. Many different hardware and software failures may occur in a database service. One cannot anticipate the entire gamut of failures and, hence, preparations for such failures are often inadequate.